package com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.entity.SxoGoodsCategoryJoin;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.param.SxoGoodsCategoryJoinAddParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.param.SxoGoodsCategoryJoinEditParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.param.SxoGoodsCategoryJoinIdParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goodscategoryjoin.param.SxoGoodsCategoryJoinPageParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 商品分类关联Service接口
 *
 * @author wangy
 * @date  2025/07/25 16:48
 **/
public interface SxoGoodsCategoryJoinService extends IService<SxoGoodsCategoryJoin> {

    /**
     * 获取商品分类关联分页
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    Page<SxoGoodsCategoryJoin> page(SxoGoodsCategoryJoinPageParam sxoGoodsCategoryJoinPageParam);

    /**
     * 添加商品分类关联
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    void add(SxoGoodsCategoryJoinAddParam sxoGoodsCategoryJoinAddParam);

    /**
     * 编辑商品分类关联
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    void edit(SxoGoodsCategoryJoinEditParam sxoGoodsCategoryJoinEditParam);

    /**
     * 删除商品分类关联
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    void delete(List<SxoGoodsCategoryJoinIdParam> sxoGoodsCategoryJoinIdParamList);

    /**
     * 获取商品分类关联详情
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    SxoGoodsCategoryJoin detail(SxoGoodsCategoryJoinIdParam sxoGoodsCategoryJoinIdParam);

    /**
     * 获取商品分类关联详情
     *
     * @author wangy
     * @date  2025/07/25 16:48
     **/
    SxoGoodsCategoryJoin queryEntity(String id);

    /**
     * 下载商品分类关联导入模板
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入商品分类关联
     *
     * @author wangy
     * @date  2025/07/25 16:48
     **/
    JSONObject importData(MultipartFile file);

    /**
     * 导出商品分类关联
     *
     * @author wangy
     * @date  2025/07/25 16:48
     */
    void exportData(List<SxoGoodsCategoryJoinIdParam> sxoGoodsCategoryJoinIdParamList, HttpServletResponse response) throws IOException;
}
